home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * *
- * SktSocket.h *
- * Copyright 1992 by Nik A Gervae *
- * *
- * One of a set of three Objective-C classes (SktSocketManager, SktSocket, *
- * and SktSocketUser) which implement a convenient interface to Berkeley *
- * stream sockets under NeXTSTEP(r). See the accompanying class *
- * specifications (files with a .rtf or .spec suffix) for further *
- * information. *
- * *
- * NeXTSTEP is a registered trademark of NeXT Computer, Inc. *
- * *
- ****************************************************************************
- * *
- * LICENSE *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation. *
- * *
- * The program and this makefile are distributed in the hope that it will *
- * be useful, but are provided "AS IS" AND WITHOUT ANY WARRANTY; without *
- * any express or implied warranty of MERCHANTABILITY or FITNESS FOR A *
- * PARTICULAR PURPOSE. See the GNU General Public License for more details. *
- * Any use or distribution of the program and documentation must include *
- * appropriate copyrights to acknowledge Nik A. Gervae and the Free *
- * Software Foundation, Inc. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
- * *
- ****************************************************************************
- * *
- * VERSION HISTORY *
- * *
- * Version numbers are simply dates in the form YYYYMMDD. These represent *
- * the date that version was finished. Only significantly changed versions *
- * are reported here, or those versions requiring explanation of changes. *
- * There may be many interim stages between dated versions. *
- * *
- * DateVersion Primary Author Notes *
- * ----------- --------------- -------------------------------------------- *
- * 19920327 Nik A Gervae First released version *
- * 19920723 Nik A Gervae Actually released *
- * *
- ***************************************************************************/
-
- #import <stddef.h>
- #ifdef NS3
- #import <objc/zone.h>
- #else
- #import <zone.h>
- #endif
-
- #import <objc/Object.h>
-
- #import "util.h"
- #import "SktSocketManager.h"
- #import "SktSocketUser.h"
-
- /*
- * Minimum size of the output queue. It gets shrunk to this if
- * the content of the queue gets significantly smaller than this.
- * Use this to optimize your output. If you get tons of output,
- * you may want to increase this.
- */
- #define OUTQSIZE 1024
-
- /***************************************************************************
- * *
- * SktSocketUser class *
- * *
- * The instance variable user is accessed only through methods (except in *
- * -init... and -free), so that you can override the behavior in subclasses *
- * by returning specific values. It may sound gratuitous now, but the *
- * habit *will* pay off sooner or later. *
- * *
- ***************************************************************************/
- @interface SktSocket : Object
- {
- struct SktSocketManager *manager; // keeps SktSocket in sync
- struct SktSocketUser *user; // uses SktSocket for I/O
-
- int socketFd; // file descriptor of the socket
- char *hostaddress; // address of connected host in dot notation
- char *hostname; // name of connected host
- char *outputQueue; // data to be sent to connected host
- long int queueLength; // length of the queue
-
- NXZone *zone; // zone alloc'ed from
- }
-
-
- // Initializing
- - init; // DON'T EVER SEND THIS
- - initOnFd:(int)serviceSocketFd
- withManager:(struct SktSocketManager *)aManager;
- - initOnHostname:(char *)hostname andPort:(int)port;
- - initOnAddress:(char *)hostAddress andPort:(int)port;
- - setSocketOptions:(int)fd;
- - close;
- - free;
-
- // Access
- - setUser:(struct SktSocketUser *)aUser;
- - (struct SktSocketUser *)user;
- - (struct SktSocketManager *)manager;
-
- - (int)socketFd;
- - (const char *)hostaddress;
- - (const char *)hostname;
-
- // I/O support
- - readInput;
-
- - queueOutput:(const char *)output ofLength:(long int)length;
- - queueOutputString:(const char *)aString;
-
- - flushOutput;
- - purgeOutput;
-
- @end /*interface SktSocket*/
-